package code09集合.List;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Test01_定义方式 {

    public static void main(String[] args) {
        // 定义方式一:构造一个初始容量为10的空集合
        // 不指定泛型默认是Object类型
        ArrayList list = new ArrayList();
        // Object[] arr = new Object[10];
//        ArrayList<String> list = new ArrayList<>();
        String[] arr = new String[10];
        list.add("admin");
        list.add(1);
        list.add(3.14);
        list.add(true);
        list.add('c');
        // 对于集合,查询时只会展示已经赋值的数据,如果元素的数量没有达到初始的长度,也只会显示赋值的数据
        System.out.println(list);
        // 对于数组,不管元素是否赋值,最终显示的数据一定与数组长度一致
        System.out.println(Arrays.toString(arr));

        // 定义方式二:构造一个指定初始容量的空集合
        List<String> list2 = new ArrayList<>(5);
        list2.add("admin");
        list2.add("jack");
        list2.add("tom");
        list2.add("lucy");
        list2.add("john");
        list2.add("alex");
        // 当元素的数量超过了集合初始容量,集合会自动扩容
        System.out.println(list2);
        System.out.println("--------------------------------------------------");
        List<Integer> nums = new ArrayList<>();
        nums.add(1);
        nums.add(2);
        nums.add(3);
        System.out.println(nums);
        // 定义方式三:可以将一个指定的Collection集合转换成ArrayList
        ArrayList<Integer> list3 = new ArrayList<>(nums);
        System.out.println(list3);

        // 在Arrays工具类中,提供了将一个可变长参数转换成List的方法
        List<Integer> nums2 = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        ArrayList<Integer> list4 = new ArrayList<>(nums2);
        System.out.println(list4);

        // 简写方式
        List<String> names = new ArrayList<>(Arrays.asList("admin", "jack", "tom", "alice"));
        System.out.println(names);

    }

}